﻿Namespace Negocios

    Public Class Pessoa

#Region "Variáveis"

        Private dcDados As Dados.dcDadosDataContext

#End Region

#Region "Propriedades"

        Friend Property Contexto() As Dados.dcDadosDataContext
            Get
                If dcDados Is Nothing Then dcDados = New Dados.dcDadosDataContext
                Return dcDados
            End Get
            Set(ByVal value As Dados.dcDadosDataContext)
                dcDados = value
            End Set
        End Property

#End Region

#Region "Construtores"

#End Region

#Region "Funções Privadas"

        Private Function ConverterDadosEmObjeto(ByVal objPessoaDados As Dados.Pessoa) As Objetos.Pessoa

            If objPessoaDados Is Nothing Then Return Nothing

            Dim objPessoa As New Objetos.Pessoa

            With objPessoa

                .CodigoPessoa = Convert.ToInt32(objPessoaDados.CodigoPessoa)
                .Situacao = Convert.ToInt32(objPessoaDados.Situacao)
                .Tipo = Convert.ToInt32(objPessoaDados.Tipo)

            End With

            Return objPessoa

        End Function

        Private Function ConverterDadosEmObjeto(ByVal listPessoaDados As List(Of Dados.Pessoa)) As List(Of Objetos.Pessoa)

            If listPessoaDados Is Nothing Then Return Nothing

            Dim listPessoa As New List(Of Objetos.Pessoa)

            For Each objPessoaDados In listPessoaDados
                listPessoa.Add(ConverterDadosEmObjeto(objPessoaDados))
            Next

            Return listPessoa

        End Function

        Private Function RetornarPessoa() As IQueryable(Of Dados.Pessoa)

            Return (From P In Contexto.Pessoas)

        End Function

        Private Function RetornarPessoa(ByVal intCodigoPessoa As Integer) As IQueryable(Of Dados.Pessoa)

            Return (From P In RetornarPessoa() Where P.CodigoPessoa.Equals(intCodigoPessoa))

        End Function

#End Region

#Region "Friend"

#End Region

#Region "Públicas"

        Public Function EncontrarPorCodigo(ByVal intCodigoPessoa As Integer) As Objetos.Pessoa

            Try

                Dim objPessoa As Dados.Pessoa = RetornarPessoa(intCodigoPessoa).SingleOrDefault

                Return ConverterDadosEmObjeto(objPessoa)

            Catch ex As Exception
                Throw
            End Try

        End Function

#End Region

    End Class

End Namespace

